<?php

namespace app\api\controller;

use app\common\controller\Api;

/**
 * 首页接口
 */
class Index extends Api
{
    protected $noNeedLogin = ['getAreaList'];

    protected $userID = 1;
    /**
     * 首页
     *
     */
    public function index()
    {
        $this->success('请求成功');
    }

    //获取地区列表
    public function getAreaList()
    {
        $list = db('city_area')->select();
        $this->success('请求成功',$list);
    }

    //banner列表
    public function getBannerList()
    {
        $list = db('city_banner')->select();
        $this->success('请求成功',$list);
    }

    //通知列表
    public function getMessageList()
    {
        $list = db('city_message')->select();
        $this->success('请求成功',$list);
    }

    //首页分类列表
    public function getCategoryList()
    {
        $list = db('city_message')->select();
        $this->success('请求成功',$list);
    }

    //标签列表
    public function getTagsList()
    {
        $list = db('city_message')->select();
        $this->success('请求成功',$list);
    }

    //文章回复
    public function addComment()
    {
        $data['parent_id'] = 0;//0表示回复文章
        $res = db('city_message')->insert($data);
        if($res){
            $this->success('请求成功');
        }
        $this->error('请求失败');
    }

    //回复列表
    public function getComments()
    {
        $articleId = 1;
        $comments = db('city_comment')->field('id, parent_id, content')
            ->where('article_id', $articleId)->order('created_at', 'asc')->select()->toArray();

        $formattedComments = $this->formatComments($comments);

        $this->success('请求成功',$formattedComments);
    }

    // 递归函数，用于格式化评论和回复
    private function formatComments($comments, $parentId = 0, $level = 0)
    {
        $formatted = [];
        foreach ($comments as $comment) {
            if ($comment['parent_id'] == $parentId) {
                $formattedComment = [
                    'id' => $comment['id'],
                    'content' => str_repeat('-', $level) . $comment['content'], // 使用'-'表示层级
                    'replies' => $this->formatComments($comments, $comment['id'], $level + 1), // 递归获取回复
                ];
                $formatted[] = $formattedComment;
            }
        }
        return $formatted;
    }

//<template>
//<view class="container">
//<view v-for="(comment, index) in comments" :key="comment.id" class="comment-item">
//<text class="comment-content">{{ comment.content }}</text>
//      <text class="comment-info">
//        {{ comment.parent_id === 0 ? '用户XXX：' : 'XXX回复' + getRepliedUsername(comment.parent_id, comments) }}
//      </text>
//
//      <!-- 递归渲染回复 -->
//      <view v-if="comment.replies && comment.replies.length > 0" class="comment-replies">
//        <text class="reply-header">回复：</text>
//        <view v-for="(reply, replyIndex) in comment.replies" :key="reply.id" class="reply-item">
//          <text class="reply-content">{{ reply.content }}</text>
//          <text class="reply-info">XXX</text>
//        </view>
//      </view>
//    </view>
//  </view>
//</template>
//
//<script>
//export default {
//    data() {
//    return {
//        comments: [], // 从接口获取的评论数据
//    };
//  },
//  methods: {
//        // 假设你已经从后端接口获取了数据并更新了comments数组
//        // 假设后端返回的comments已经是格式化好的，包含了回复关系
//
//        // 获取被回复的用户名
//        getRepliedUsername(parentId, allComments) {
//            // 根据parentId找到对应的用户名
//      const parentComment = allComments.find(comment => comment.id === parentId);
//      if (parentComment) {
//          // 这里假设用户名可以从comment的其他属性中获取，比如user_name
//          // 注意：在实际应用中，用户名通常存储在另一个表中，如users表，并通过user_id关联
//          return parentComment.user_name || '未知用户';
//      }
//      return '未知用户';
//    },
//
//    // 这里应该有一个方法来从后端获取评论数据并更新comments数组
//    // 例如：fetchComments() { /* ... */ }
//  },
//  // 可以在mounted或created钩子中调用fetchComments()来从后端获取数据
//  mounted() {
//  this.fetchComments(); // 假设这个方法从后端获取评论数据
//  },
//};


}
